我一直在做coderbyte编程挑战,并在做一个,遇到问题。我想从字符串中分离一个单词,对它进行一些检查,然后移动到另一个单词。我要发布的代码应该只显示第一个单词并将其打印在屏幕上。当我运行它时,它不会打印任何东西。我认为,也许我在while循环中做了错误的事情,所以我做了一个简单的测试。假设我的输入是“This is a test sentence”,而不是单词(在cout中),我输入word [0]。然后打印“T”就好了。你能找到问题所在吗?字符串将不会打印
#include <iostream>
#include <string>
using namespace std;
int Letters(string str) {
int i=0;
int len=str.length();
string word;
while(i<len){
if(isspace(str[i])){word[i]='\0'; break;}
word[i]=str[i];
i++;
}
cout<<word;
return 0;
}
int main() {
int test;
string str;
getline(cin, str);
test=Letters(str);
return 0;
}
将word [i] = str [i];改为['word.append(str [i]);'](http://en.cppreference.com/w/cpp/string/basic_string的/附加)。你没有保留'word'的空间,所以你不能访问'word [i]'。 – 2014-09-24 15:14:50
你有未定义的行为。提示 - 'word [i] = str [i]' – 2014-09-24 15:14:52