我是C ++的初学者,我想知道如何做到这一点。 我想写一个接受文本行的代码。例如。 “Hello stackoverflow是一个非常好的网站”
从输出中我只想打印出前三个单词并跳过其余单词。
我想要的输出:“Hello stackoverflow是”
如果是Java,我会使用字符串split()。至于C ++,我真的不知道。他们的任何类似或C ++的方法是什么?
答案 0 :(得分:7)
运营商>>把一条小溪打成了文字 但是没有检测到行尾。
你可以做的是读一行,然后从该行获得前三个单词:
#include <string>
#include <iostream>
#include <sstream>
int main()
{
std::string line;
// Read a line.
// If it succeeds then loop is entered. So this loop will read a file.
while(std::getline(std::cin,line))
{
std::string word1;
std::string word2;
std::string word3;
// Get the first three words from the line.
std::stringstream linestream(line);
linestream >> word1 >> word2 >> word3;
}
// Expanding to show how to use with a normal string:
// In a loop context.
std::string test("Hello stackoverflow is a really good site!");
std::stringstream testStream(test);
for(int loop=0;loop < 3;++loop)
{
std::string word;
testStream >> word;
std::cout << "Got(" << word << ")\n";
}
}
答案 1 :(得分:0)
为您提供进一步调查的一些建议:
对于真正的C ++解决方案,您可能希望查找stream
和streaming operators
,如>>
。
CPP Reference是一个很好的在线API参考。
仍然有效的C ++,但根据其C历史记录将是strtok()
函数来标记字符串,这有几个潜在的问题。正如Martin正确指出的那样,它修改了源数据,这并不总是可行的。此外,线程安全和/或重新入侵也存在问题。
通常情况下,使用流和C ++字符串会更好。
答案 2 :(得分:0)
这很容易且100%可靠
void Split(std::string script)
{
std::string singelcommand;
std::stringstream foostream(script);
while(std::getline(foostream,singelcommand))
show_remote_processes(_ssh_session,singelcommand);
}