2013-09-03 4 views
-3

Я полный новичок в C++, и я пытаюсь сделать следующую программу:C++ «Использование пространства в качестве разделителя»


  1. Прочитайте предложение из консоли.
  2. Разделите предложение на слова, используя пробел в качестве разделителя.
  3. Итерации по каждому слову, если слово является числовым значением, затем распечатать его значение в два раза, в противном случае распечатать слово, причем каждый вывод будет выполнен в отдельной строке.

Я действительно потерял о том, как это сделать. Особенно, используя пробел в качестве разделителя.

+2

Из-за недостатка информации, я должен спросить: вы знаете, что строка? Если да, знакомы ли вы с C++-строками? Если нет, я предлагаю вам сделать некоторые чтения перед кодированием этой программы. – streppel

+0

Если вы знакомы с обработкой строк в целом, посмотрите на 'gets' и' strtok'. – lurker

+0

Попробуйте найти токенизатор. Вы не показали никаких попыток или не показали, что вы проводили какие-либо исследования. Если вы не можете сделать часть 1, то вы действительно ничего не пробовали, но для второй части найдите токенизацию. – CamelopardalisRex

ответ

2

Может иметь что-то вроде следующего:

С std::stringstream и std::getline

std::string str; 
std::string temp; 
std::getline(std::cin,str); 

std::stringstream ss(str); 

while(getline(ss,temp, ' ')) // delimiter as space 
{ 
     std::stringstream stream(temp); 
     if(stream >> val) 
     std::cout<<2*val<<std::endl; 
     else 
     std::cout<<temp<<std::endl; 
} 

См DEMO

+0

Возможно, вы захотите добавить защиту от «чисел», таких как 100xxx; например 'char x; ... if ((поток >> val) &&! (поток >> x)) {...} ' – anatolyg

Смежные вопросы