【问题标题】:Need help understanding valid C-strings operations in C++需要帮助理解 C++ 中的有效 C 字符串操作
【发布时间】:2016-11-29 06:59:25
【问题描述】:

有人问我一个关于刺痛的作业的问题。问题问: 鉴于声明:char myString[16]; 以下哪项陈述是有效的?如果语句无效,请提供正确的语法。

a. strcpy(myString, “Hello the world”);
b. strlen(myString);
c. myString = “Marylane”;
d. cin.getline(myString, 80);
e. cout << myString;
f. if (myString >= “Nice day”)
     cout << myString;
g. myString[6] = ‘t’;

我已经能够编译如下几个部分:

/*b.*/ int len;
 len = strlen(myString);

/*c.*/ strcpy(myString, “Hello the world”);

/*f.*/ int strTest;
 strTest = strcmp(myString, "Nice day");

 if (strTest < 0)
   cout << myString << endl;
 else 
   { 
   cout << "No Dice" << endl; 
   }

我认为 'g' 是无效的,因为我认为你不能使用赋值运算符,但我得到了它的编译。谁能解释一下?

【问题讨论】:

  • 为什么不能使用赋值运算符?在这种情况下,您只是将原始值分配给内存位置。
  • 您不能分配给数组,但可以分配给数组中的单个元素(除非它本身就是一个数组)。
  • 您认为将字符串中的第七个字符设置为t 的正确方法是什么?
  • 上面显示的方式对我来说很有意义。我刚刚注意到在我们的书中它说,“因为数组上不允许进行聚合操作,例如赋值和比较,所以下面的语句是不合法的:studentName="Lisa Johnson";”这与上面的有什么不同?

标签: c++ arrays string


【解决方案1】:

char myString[16]; 是一个数组。 myString[6] = 't'; 将字符 't' 分配给该数组的第六个索引。这是 C++ 中的有效操作。

【讨论】:

    【解决方案2】:

    您正在使用std::string 对代码中的字符串进行操作,而std::string可变的。因此,您可以使用分配中的基本操作来更改字符串的某些部分。我建议您阅读文档或此答案:https://stackoverflow.com/a/2916394/1867076

    此外,您也可以在这里找到一些帮助您的示例:http://www.cplusplus.com/forum/beginner/821/

    如果这不能回答您的问题,请通知我。

    【讨论】:

      猜你喜欢
      • 2014-05-26
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      相关资源
      最近更新 更多