【问题标题】:How to convert a string to char[] [duplicate]如何将字符串转换为 char[] [重复]
【发布时间】:2011-09-09 11:54:32
【问题描述】:

可能重复:
Convert std::string to const char* or char*

我用这个方法从一个txt数据中得到了一行

 for ( int anrede=0;!user1.eof();anrede++){
     if (anrede==1){
         getline(user1, inhalt_anrede);       
     }
 }

现在inhalt_anrede 应该转换为char[5] anrede 我在程序的其他部分使用了anrede

所以 txt 数据就像保存数据一样工作。

我还在学习,所以请温柔一点;D.

顺便说一句:不,这不像有人说我的另一个问题那样做作业。我来自德国,在德国没有 C++ @ 学校。甚至没有java或delphi。如果你很幸运你学会了 HTML,就是这样。

【问题讨论】:

标签: c++ string char


【解决方案1】:
std::string str("abc");
char cstr[5];
strcpy(cstr, str.c_str());

请确保不要溢出 c 字符串(在此示例中只能包含 4 个字符 + NULL)。

【讨论】:

  • 如果 str 可以超过 4 个字符,最好使用 strncpy()。
【解决方案2】:

您可能想查看字符串的 c_str() 方法。更多信息请看这里http://cplusplus.com/reference/string/string/c_str/

【讨论】:

    【解决方案3】:

    字符串有一个返回char* 的c_str() 方法。如果您需要它是 char[5],则将字符串中的前五个字符复制到一个。

     char strArr[5];
     for (int i = 0; i < 5 && i < inhalt_anrede.length(); ++i) {
         strArr[i] = inhalt_anrede[i];
     }
    

    请记住,strArr 不一定是 '\0' 现在终止。

    【讨论】:

      【解决方案4】:

      使用std::stringmemcpy的成员c_str()

      char anrede[5];
      if (anrede.size() >= 5)
          memcpy(anrede, inhalt_anrede.c_str(), 5);
      else
          throw "string is too short";
      

      请注意,您已经在 for 循环中使用了一个名为 anrede 的变量作为计数器!

      【讨论】:

        猜你喜欢
        • 2012-10-03
        • 1970-01-01
        • 2016-09-05
        • 2020-05-08
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 2013-10-19
        相关资源
        最近更新 更多