0

我对 c 和 c++ 非常陌生,并且我被困在尝试读取在双引号之间分隔的用户输入,以便我必须交付给我的算法类的程序。该条目将采用以下形式:“类似这样,带有空格,并由这两个双引号分隔”。我需要从中得到的是分隔符之间包含的字符串( char * )。不幸的是,我一直在尝试解决这个小问题,但没有运气......

开发环境是虚拟化的Windows 7,ide(都是老师要求的)是DEVC++

任何人都可以给我一个提示或帮助我吗?我被这个困住了,我的时间不多了。提前致谢!

4

2 回答 2

4

假设您有一个当前字符是双引号的流,您可以

  1. ignore()当前字符。
  2. getline()'"'用作分隔符。

这是跳过前导空格的代码,验证下一个字符是否为 a '"',如果是,则将值读入str

std::string str;
if ((in >> std::ws).peek() == '"' && std::getline(in.ignore(), str, '"')) {
    std::cout << "received \"" << str << "\"\n";
}
于 2013-11-04T00:47:21.160 回答
0

如果我正确理解了这个问题,那么以下内容适合您。这种方法将消除每个标点符号。

#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
于 2013-11-04T00:51:06.490 回答