2017-01-31 5 views
0
.
#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include <algorithm> 
using namespace std; 

string output; 
string words; 
int i; 

int main() 
{ 
    cin >> words; // gets words from user 
    output = ""; // readys the output string 
    i = 0;  // warms up the calculator 
    int size = words.size(); // size matters 
    while (i <= size) { // loops through each character in "words"  (can't increment in the function?) 
     output += ":regional_indicator_" + words[i] +':'; //  appends output with each letter from words plus a suffix and prefix 
     ++i; 
    }    

    cout << output << endl; // prints the output 
    return 0; 
} 

Мои намерения с этим кодом прилично понятны. Я хотел бы думать. Просто возьмите предложение, замените все символы на этот символ + суффикс и префикс. Моя проблема в том, что при запуске в отладчике я буду вводить "hello world", и программа выведет "osss".Программа изменения строки. Вывод случайных символов.

У меня нет абсолютно никакого образования в C++, и я здесь с полной потерей. Это мой ++i?

+0

'CIN >> слова,' будет читать только одно слово, а не все слова в строке. – Barmar

+0

Вы не можете использовать '+' для конкатенации строковых литералов и символов. Один из аргументов должен быть «std :: string». – Barmar

ответ

0

Эта линия:

output += ":regional_indicator_" + words[i] +':'; //  appends output with each letter from words plus a suffix and prefix 

не работает. Перегрузка оператора + для конкатенации строк работает только в том случае, если один из аргументов равен std::string. Но вы пытаетесь использовать его с литералом C-строки и char. Изменение, что:

output += "regional_indicator_"; 
output += words[i]; 
output += ':'; 

Это использует += перегружать std::string для каждой части, и делает то, что вы хотите.

Кроме того, если вы хотите, чтобы прочитать всю строку, а не только одно слово, используйте:

getline(cin, words); 
+0

Спасибо тонну! Работал отлично, и я бросил вокруг него цикл if, чтобы обрабатывать пробелы. Сегодня я начну читать Кернган и Ритчи, поэтому мне не нужно задавать более глупые вопросы. – rockcabbage

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

  • Нет связанных вопросов^_^