Я довольно noob с c и c++, и я застрял, пытаясь прочитать пользовательский ввод, заключенный между двойными кавычками для программы, которую я должен доставить в мой класс алгоритмов. Запись будет в такой форме: "что-то вроде этого, с пробелами и ограничено этими двумя двойными кавычками". Мне нужно получить от него строку (char *), содержащуюся между разделителями. К несчастью, я пытался без проблем решить эту небольшую проблему...
Среда разработки - это виртуализованная Windows 7 и идеал (оба требования от учителя) - это DEV c++
Кто-нибудь может дать нам подсказку или помочь? Я застрял в этом, и у меня не хватит времени. заранее спасибо!
Предполагая, что у вас есть поток, где текущий символ является двойной цитатой, вы можете просто
ignore()
текущий символ.getline()
используя '"'
в качестве разделителя. Вот код, который пропускает ведущее пространство, проверяет, что следующий символ является '"'
и, если это так, считывает значение в 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
"
разделитель».