2011-07-15 30 views
3

私は何かを試してみて、次のコードを作っていました。文字列中の個々の文字を取り、そのASCII文字を出力することになっています。ただし、スペースがあると変換が停止します。コードは次のとおりです。文字列をASCIIに変換する

#include <iostream> 
#include <string> 
using namespace std; 

void convertToASCII(string letter) 
{ 
    for (int i = 0; i < letter.length(); i++) 
    { 
     char x = letter.at(i); 
     cout << int(x) << endl; 
    } 
} 

int main() 
{ 
    string plainText; 
    cout << "Enter text to convert to ASCII: "; 
    cin >> plainText; 
    convertToASCII(plainText); 
    return 0; 
} 

なぜこのようなことが起こるのですか?

答えて

2

書式付き入力関数operator>>istreamに設定すると、空白になるとストリームからの抽出が停止します。したがって、あなたの文字列には残りの入力が含まれていません。あなたが行の最後まで読みたい場合は

、代わりにgetlineを使用します。

string plainText; 
cout << "Enter text to convert to ASCII: "; 
getline(cin, plainText); 
convertToASCII(plainText); 
0
cin.ignore(); 
cin.getline(plaintext,100); // 100 (assumed) is the size of plaintext 

空白の文字列を受け入れるために、以下の2行のコードを使用してください。