我对 c 和 c++ 非常陌生,并且我被困在尝试读取在双引号之间分隔的用户输入,以便我必须交付给我的算法类的程序。该条目将采用以下形式:“类似这样,带有空格,并由这两个双引号分隔”。我需要从中得到的是分隔符之间包含的字符串( char * )。不幸的是,我一直在尝试解决这个小问题,但没有运气......
开发环境是虚拟化的Windows 7,ide(都是老师要求的)是DEVC++
任何人都可以给我一个提示或帮助我吗?我被这个困住了,我的时间不多了。提前致谢!
假设您有一个当前字符是双引号的流,您可以
ignore()
当前字符。getline()
'"'
用作分隔符。这是跳过前导空格的代码,验证下一个字符是否为 a '"'
,如果是,则将值读入str
:
std::string str;
if ((in >> std::ws).peek() == '"' && std::getline(in.ignore(), str, '"')) {
std::cout << "received \"" << str << "\"\n";
}
如果我正确理解了这个问题,那么以下内容适合您。这种方法将消除每个标点符号。
#include <string>
#include <algorithm>
#include <iostream>
int main ()
{
std::string input ;
std::cout << "Please, enter data: ";
std::getline (std::cin,input);
input.erase( remove_if(input.begin(), input.end(), &ispunct), input.end());
std::cout << input << std::endl;
std::cin.get();
return 0;
}
这就是结果。
>Please, enter data: There' ?are numerous issues.
There are numerous issues
这种方法正是您使用 strtok 所寻找的
#include <stdio.h>
#include <iostream>
int main()
{
char sentence[] = "\"something like this, with spaces, and delimited by this two double quotes\"";
char * word;
std::cout << "Your sentence:\n " << sentence << std::endl;
word = strtok (sentence,"\"");
std::cout << "Result:\n " << word << std::endl;
return 0;
}
结果
Your sentence:
"something like this, with spaces, and delimited by this two double quotes"
Result:
something like this, with spaces, and delimited by this two double quotes