Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 简单程序省略了第一个字符_C++_Cin - Fatal编程技术网

C++ 简单程序省略了第一个字符

C++ 简单程序省略了第一个字符,c++,cin,C++,Cin,任务是cin>>..,只取字母,将大写字母改为小写,并仅用小写字母重写行。我不明白为什么我的代码忽略了输入的第一个字母 #include <iostream> #include <cctype> using namespace std; int main() { char ch; cin >> ch; while (ch != '@'){ if (cin.get(ch)) { i

任务是
cin>>..
,只取字母,将大写字母改为小写,并仅用小写字母重写行。我不明白为什么我的代码忽略了输入的第一个字母

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

int main()
{
    char ch;
    cin >> ch;
    while (ch != '@'){
        if (cin.get(ch))
        {
            if (isalpha(ch)){
                if (isupper(ch)){
                    cout <<(char)tolower(ch);

                }
                else
                    cout << ch;
            }
            if (ch == '\n')
                cout << "\nNie zakonczyles ciagu znakiem @" << endl;

        }
        else{
            cin.clear();
        }

    }
}
#包括
#包括
使用名称空间std;
int main()
{
char ch;
cin>>ch;
而(ch!=“@”){
如果(cin.get(ch))
{
if(艾萨帕(ch)){
如果(isupper(ch)){

cout因为就在
cin>>ch;
之后,您正在做
cin.get(ch)
因为就在
cin>>ch;
之后,您正在做
cin.get(ch)

cin>cin.get(ch)
获取要打印的字符,但实际使用
cin>>ch读取第一个字符,然后丢弃结果

您可能希望摆脱
cin>>ch;
指令,并将
ch
初始化为不同于
@'
的值,或者将循环转换为
do while
循环,类似于以下内容:

char ch;
do
{
    if (cin.get(ch))
    {
       /* Do what is needed */
    }
}
while (ch != '@')

因为循环使用
cin.get(ch)
获取要打印的字符,但是第一个字符实际上是用
cin>>ch
读取的;然后丢弃结果

您可能希望摆脱
cin>>ch;
指令,并将
ch
初始化为不同于
@'
的值,或者将循环转换为
do while
循环,类似于以下内容:

char ch;
do
{
    if (cin.get(ch))
    {
       /* Do what is needed */
    }
}
while (ch != '@')