C++ 字符 while( str != '\0')
C++ char while( str != '\0')
我正在用 C++ 构建一个非常简单的程序。该程序是这样工作的,您将输入一些随机数(这个数字可以是任何合理的大小)因此,例如,如果您输入 23215,您将得到 87890 作为输出。但是我在这里的 while 语句“while(str != '\0') 没有像它应该做的那样工作。有人知道为什么吗?因为据我所知,'\0' 是字符结尾的特定符号。(我知道 str 对于 char 来说是个坏名字,我现在懒得改了)
int main()
{
char str;
cout << "Enter a coded message: ";
cin >> str;
cout << endl;
cout << "Decoded message: ";
while (str != '[=10=]')
{
switch (str)
{
case '0': cout << "5";
break;
case '1': cout << "9";
break;
case '2': cout << "8";
break;
case '3': cout << "7";
break;
case '4': cout << "6";
break;
case '5': cout << "0";
break;
case '6': cout << "4";
break;
case '7': cout << "3";
break;
case '8': cout << "2";
break;
case '9': cout << "1";
break;
}
}
cout << endl;
}
But my while statement here while(str != '[=12=]')
aint working like it's supposed to do. Someone knows why?
当您从输入流中读取一个字符时,它永远不会等于 '[=13=]'
。这是逻辑上的第一个错误。
此外,您只阅读了 str
一次。除了输入的第一个字符之外,您没有阅读任何内容。
将您的代码更改为:
int main()
{
int ch;
cout << "Enter a coded message: ";
cout << endl;
cout << "Decoded message: ";
while ( (ch = cin.get()) != EOF )
{
switch (ch)
如果想在读完第一行的所有字符后停止阅读,可以使用:
int main()
{
int ch;
cout << "Enter a coded message: ";
cout << endl;
cout << "Decoded message: ";
while ( (ch = cin.get()) != EOF && ch != '\n' )
{
switch (ch)
您的程序中存在一些错误。一个很大的问题是您需要让用户输入 string
而不是 char
。看看下面的代码
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
cout << "Enter a coded message: ";
cin >> input;
cout << "Decoded message: ";
for (int i = 0; i < input.size(); ++i) {
switch (input[i]) {
case '0': cout << "5";
break;
case '1': cout << "9";
break;
case '2': cout << "8";
break;
case '3': cout << "7";
break;
case '4': cout << "6";
break;
case '5': cout << "0";
break;
case '6': cout << "4";
break;
case '7': cout << "3";
break;
case '8': cout << "2";
break;
case '9': cout << "1";
break;
default:
cout << "X";
break;
}
}
cout << endl;
return 0;
}
我正在用 C++ 构建一个非常简单的程序。该程序是这样工作的,您将输入一些随机数(这个数字可以是任何合理的大小)因此,例如,如果您输入 23215,您将得到 87890 作为输出。但是我在这里的 while 语句“while(str != '\0') 没有像它应该做的那样工作。有人知道为什么吗?因为据我所知,'\0' 是字符结尾的特定符号。(我知道 str 对于 char 来说是个坏名字,我现在懒得改了)
int main()
{
char str;
cout << "Enter a coded message: ";
cin >> str;
cout << endl;
cout << "Decoded message: ";
while (str != '[=10=]')
{
switch (str)
{
case '0': cout << "5";
break;
case '1': cout << "9";
break;
case '2': cout << "8";
break;
case '3': cout << "7";
break;
case '4': cout << "6";
break;
case '5': cout << "0";
break;
case '6': cout << "4";
break;
case '7': cout << "3";
break;
case '8': cout << "2";
break;
case '9': cout << "1";
break;
}
}
cout << endl;
}
But my while statement here
while(str != '[=12=]')
aint working like it's supposed to do. Someone knows why?
当您从输入流中读取一个字符时,它永远不会等于 '[=13=]'
。这是逻辑上的第一个错误。
此外,您只阅读了 str
一次。除了输入的第一个字符之外,您没有阅读任何内容。
将您的代码更改为:
int main()
{
int ch;
cout << "Enter a coded message: ";
cout << endl;
cout << "Decoded message: ";
while ( (ch = cin.get()) != EOF )
{
switch (ch)
如果想在读完第一行的所有字符后停止阅读,可以使用:
int main()
{
int ch;
cout << "Enter a coded message: ";
cout << endl;
cout << "Decoded message: ";
while ( (ch = cin.get()) != EOF && ch != '\n' )
{
switch (ch)
您的程序中存在一些错误。一个很大的问题是您需要让用户输入 string
而不是 char
。看看下面的代码
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
cout << "Enter a coded message: ";
cin >> input;
cout << "Decoded message: ";
for (int i = 0; i < input.size(); ++i) {
switch (input[i]) {
case '0': cout << "5";
break;
case '1': cout << "9";
break;
case '2': cout << "8";
break;
case '3': cout << "7";
break;
case '4': cout << "6";
break;
case '5': cout << "0";
break;
case '6': cout << "4";
break;
case '7': cout << "3";
break;
case '8': cout << "2";
break;
case '9': cout << "1";
break;
default:
cout << "X";
break;
}
}
cout << endl;
return 0;
}