Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Visual c++ I';m需要计算给定字符串的每个单词、行和字符_Visual C++ - Fatal编程技术网

Visual c++ I';m需要计算给定字符串的每个单词、行和字符

Visual c++ I';m需要计算给定字符串的每个单词、行和字符,visual-c++,Visual C++,正如你所看到的,我试图获得单词数、字符数和行数,但下面的代码不起作用 #include<iostream> using namespace std; int main() { char ch; int wc=1, lc=1, cc=0; while((ch=cin.get())!='*') { cc++; if(ch==' ') { wc++; }

正如你所看到的,我试图获得单词数、字符数和行数,但下面的代码不起作用

#include<iostream>
using namespace std;
int main()
{
char ch;
int wc=1, lc=1, cc=0;

    while((ch=cin.get())!='*')
    {
        cc++;
        if(ch==' ')
            {
                wc++;
            }
        else if(ch=='\n')
            {
                wc++;
                lc++;
            }
    }    
cout<<"\n the number of character=="<<cc;
cout<<"\n the number of words=="<<wc;
cout<<"\n the number of lines=="<<lc;

return 0;
}
#包括
使用名称空间std;
int main()
{
char ch;
int wc=1,lc=1,cc=0;
而((ch=cin.get())!=“*”)
{
cc++;
如果(ch='')
{
wc++;
}
else if(ch='\n')
{
wc++;
lc++;
}
}    

我输入了你的代码,并用g++编译了它。它工作正常,没有任何问题。你能发布你得到的错误吗?或者它编译了吗

也许您的VisualC++编译器工作不正常。代码本身应该工作。< /P>
编辑:下面是上述代码的不同版本,其中没有文本输入作为零字进行线程化,EOF也是循环的中断条件。 EOF取决于您的系统,在Windows上是Control+z,在Linux上可能是Control+d。
输入文本的单词之间可能有多个空格。标点符号和数字(0-9)尽可能作为单词分隔符。下划线、反勾号、波浪号和类似“不”的撇号作为单词的一部分处理。
花括号作为单词的一部分处理,以保持代码简单,而普通括号是分隔符

#包括
使用名称空间std;
int main()
{
int ch,wc=0,lc=1,cc=0,old=0;

可能代码的哪一部分不起作用了?您正在使用的输入是什么,您期望得到什么?您如何知道它是否起作用?空格是字符吗?为什么连续空格会增加字数?空格是否可以在两侧与
\n
相邻?标点符号是否会打断单词?这是一个非常简单的示例。还有多个单词之间的空格可能会搞乱计数。但基本上这是可行的。当标点符号正确完成时,它们应该会起作用。我假设将格式正确的文本传递给代码。@areop enap代码不会检查
EOF
,因此如果没有输入
*
字符,它会运行一个无限循环。它会对连续的sp进行错误计数aces和空行。如果只输入一个
*
,它将计为0个字符,但只计算1个单词和1行。因此我不会说“基本上这是有效的”.我卸载了我的mingw64并重新安装,之后它就可以工作了。我不知道它出了什么问题,但知道它工作得很好。谢谢你的回答。行数应该是行数,包括空行,还是你希望代码文件的行号没有空行?我假设是文本正确的格式。我还假设这是一个基本的代码尝试,而不是一个完美的lexer。我也认为这不是一个bug,但计划在*处打破,因为你如何用键盘输入EOF?另外,如果你对这段代码有更好的了解,为什么不发布它呢?它编译,运行,没有错误或挂断,正确的格式计算ed文本(文本至少是一个单词),就是这样。