我使用C ++
command1 5 #Create 5 box
长度12
insertText这是一个盒子
如何在输入中读取而忽略#sign之后的任何内容?
例如输出应该没有#Create 5 box
command1 5
length 12
insertText THIS IS A BOX
编辑:
我尝试了以下内容:
while(getline(myfile, line))
{
istringstream readLine(line);
getline(readLine, command, ' ');
getline(readLine, input, '\0');
}
......但它似乎无法发挥作用。
答案 0 :(得分:1)
在你的函数中逐个检查每个字符,添加以下代码:(伪代码)
if(currChar == #){
while(currChar != '\n'){
getNextChar();// you arent saving it so youre ignoring it
}
}else{
Char c = getNextChar();
//now you can add this character to your output string
答案 1 :(得分:1)
外部while(getline(
和istringsteam
很好,但之后你想要将一个以空格分隔的单词读入命令,然后可能是一个或多个以空格分隔的输入:之类的东西
std::string command, input;
std::vector<std::string> inputs;
if (readLine >> command && command[0] != '#')
{
while (readLine >> input && input[0] != '#')
inputs.push_back(input);
// process command and inputs...
}
使用>>
比getline
更容易解析readLine
,因为如果他们没有获得至少一个有效字符,则会设置流失败状态,从而{{1}索引安全并干净地删除空行或没有输入的命令。
答案 2 :(得分:1)
您可以像这样简单地使用std::getline()
:
int main()
{
std::ifstream ifs("file.txt");
std::string line;
while(std::getline(ifs, line))
{
std::istringstream iss(line);
if(std::getline(iss, line, '#')) // only read up to '#'
{
// use line here
std::cout << line << '\n';
}
}
}
<强>输出:强>
command1 5
length 12
insertText THIS IS A BOX
答案 3 :(得分:0)
。您可以使用ignore(inputSize,“#”)或使用getline http://www.cplusplus.com/reference/istream/istream/ignore/ http://www.cplusplus.com/reference/istream/istream/getline/