代码之家  ›  专栏  ›  技术社区  ›  kdbdallas

C++ STD::字符串禁止代码到C代码

  •  1
  • kdbdallas  · 技术社区  · 14 年前

    我有一些C++代码,我发现它确实是我需要的,但是我需要它在C中,我不知道我能在C中做什么,所以我希望有人能帮助我。

    C++代码是:

    std::string value( (const char *)valueBegin, (const char *)valueEnd );

    这将使用字符串::字符串构造函数:

    template<class InputIterator> string (InputIterator begin, InputIterator end);

    有人能帮我把它转换成C代码吗?

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  7
  •   R Samuel Klatchko    14 年前
    // Get the number of characters in the range
    size_t length = valueEnd - valueBegin;
    
    // Allocate one more for the C style terminating 0
    char *data = malloc(length + 1);
    
    // Copy just the number of bytes requested
    strncpy(data, valueBegin, length);
    
    // Manually add the C terminating 0
    data[length] = '\0';
    
        2
  •  0
  •   Messa    14 年前

    C++代码从另一个字符串的子字符串创建新字符串。C中的类似功能是 strndup :

    char *str = strndup(valueBegin, valueEnd - valueBegin);
    // ...
    free(str);
    
        3
  •  0
  •   Martin Cote    14 年前

    假设指针算法在您的情况下是合理的:

    strncpy( value, valueBegin, valueEnd-valueBegin );