【发布时间】:2014-12-11 05:27:09
【问题描述】:
我是来自 Java 的 C++ 新手。我正在努力从 Char 数组中提取第一个单词,所以我认为创建一个新数组来保存所有第一个单词字符并将它们传输到循环运行到句子中的空格是可行的。代码如下:
void execute(){
//start with getting the first word
char first_word[20];
int i = 0;
while (input[i] != ' '){ // input is a char array declared and modified with cin, obtaining the command.
first_word[i] = input[i];
i++;
}
print(first_word + ' ' + 'h' + ' ' + 'h' + 'a');
}
尝试执行此操作时,我收到错误“围绕变量 'first_word' 的堆栈已损坏”。为什么会这样?
【问题讨论】:
-
输入从何而来?大概有20多个字符。我不明白你的打印功能。数组上的 + 不会连接字符串。如果你想要像 Java 这样简单的字符串,你应该使用
std::string。 -
first_word + ' '不会像您认为的那样做。first_word是一个字符数组,而不是字符串。 -
@NeilKirk 输入来自另一种方法,该方法简单地采用“cin >> input”,然后将它们全部小写。我不知道这是否是正确的做事方式。
-
std::string first_word(input, std::find(input, input + input_size, ' '); print(first_word + " h ha"); -
cin >> input无效,如果input是一个字符数组(好吧,它是有效的,但它不会像你认为的那样做)。将input改为std::string,但随后您必须重新编写execute()才能使用std::string。