Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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++类的项目,它应该做很多事情,但是我首先要把注意力放在这个函数上,因为它工作后我可以调整它来满足其他需要。此函数用于搜索文件,并通过计算“”在文档中出现的次数来执行字数计算。也许不准确,但这将是一个很好的起点。以下是我现在掌握的代码: void WordCount() { int count_W = 0; //Varaible to store word count, will be written to label int i, c = 0; //i for iterator ifstream fPath("F:\Project_1_Text.txt"); FileStream input( "F:\Project_1_Text.txt", FileMode::Open, FileAccess::Read ); StreamReader fileReader( %input ); String ^ line; //char ws = ' '; array<Char>^ temp; input.Seek( 0, SeekOrigin::Begin ); while ( ( line = fileReader.ReadLine() ) != nullptr ) { Console::WriteLine( line ); c = line->Length; //temp = line->ToCharArray(); for ( i = 0; i <= c; i++) { if ( line[i] == ' ' ) count_W++; } //line->ToString(); } //Code to write to label lblWordCount->Text = count_W.ToString(); } void WordCount() { int count_W=0;//用于存储字数的变量将写入标签 int i,c=0;//i表示迭代器 ifstream fPath(“F:\Project_1_Text.txt”); FileStream输入(“F:\Project\u 1\u Text.txt”,FileMode::Open,FileAccess::Read); StreamReader文件读取器(%input); 字符串^行; //char ws=''; 数组^temp; 查找(0,SeekOrigin::Begin); 而((line=fileReader.ReadLine())!=nullptr) { 控制台::写线(行); c=直线->长度; //temp=line->ToCharArray(); for(i=0;i ToString(); } //要写入标签的代码 lblWordCount->Text=count\u W.ToString(); }_C++_String_File Io - Fatal编程技术网 长度; //temp=line->ToCharArray(); for(i=0;i ToString(); } //要写入标签的代码 lblWordCount->Text=count\u W.ToString(); },c++,string,file-io,C++,String,File Io" /> 长度; //temp=line->ToCharArray(); for(i=0;i ToString(); } //要写入标签的代码 lblWordCount->Text=count\u W.ToString(); },c++,string,file-io,C++,String,File Io" />

如何在c++; 我有一个高级C++类的项目,它应该做很多事情,但是我首先要把注意力放在这个函数上,因为它工作后我可以调整它来满足其他需要。此函数用于搜索文件,并通过计算“”在文档中出现的次数来执行字数计算。也许不准确,但这将是一个很好的起点。以下是我现在掌握的代码: void WordCount() { int count_W = 0; //Varaible to store word count, will be written to label int i, c = 0; //i for iterator ifstream fPath("F:\Project_1_Text.txt"); FileStream input( "F:\Project_1_Text.txt", FileMode::Open, FileAccess::Read ); StreamReader fileReader( %input ); String ^ line; //char ws = ' '; array<Char>^ temp; input.Seek( 0, SeekOrigin::Begin ); while ( ( line = fileReader.ReadLine() ) != nullptr ) { Console::WriteLine( line ); c = line->Length; //temp = line->ToCharArray(); for ( i = 0; i <= c; i++) { if ( line[i] == ' ' ) count_W++; } //line->ToString(); } //Code to write to label lblWordCount->Text = count_W.ToString(); } void WordCount() { int count_W=0;//用于存储字数的变量将写入标签 int i,c=0;//i表示迭代器 ifstream fPath(“F:\Project_1_Text.txt”); FileStream输入(“F:\Project\u 1\u Text.txt”,FileMode::Open,FileAccess::Read); StreamReader文件读取器(%input); 字符串^行; //char ws=''; 数组^temp; 查找(0,SeekOrigin::Begin); 而((line=fileReader.ReadLine())!=nullptr) { 控制台::写线(行); c=直线->长度; //temp=line->ToCharArray(); for(i=0;i ToString(); } //要写入标签的代码 lblWordCount->Text=count\u W.ToString(); }

如何在c++; 我有一个高级C++类的项目,它应该做很多事情,但是我首先要把注意力放在这个函数上,因为它工作后我可以调整它来满足其他需要。此函数用于搜索文件,并通过计算“”在文档中出现的次数来执行字数计算。也许不准确,但这将是一个很好的起点。以下是我现在掌握的代码: void WordCount() { int count_W = 0; //Varaible to store word count, will be written to label int i, c = 0; //i for iterator ifstream fPath("F:\Project_1_Text.txt"); FileStream input( "F:\Project_1_Text.txt", FileMode::Open, FileAccess::Read ); StreamReader fileReader( %input ); String ^ line; //char ws = ' '; array<Char>^ temp; input.Seek( 0, SeekOrigin::Begin ); while ( ( line = fileReader.ReadLine() ) != nullptr ) { Console::WriteLine( line ); c = line->Length; //temp = line->ToCharArray(); for ( i = 0; i <= c; i++) { if ( line[i] == ' ' ) count_W++; } //line->ToString(); } //Code to write to label lblWordCount->Text = count_W.ToString(); } void WordCount() { int count_W=0;//用于存储字数的变量将写入标签 int i,c=0;//i表示迭代器 ifstream fPath(“F:\Project_1_Text.txt”); FileStream输入(“F:\Project\u 1\u Text.txt”,FileMode::Open,FileAccess::Read); StreamReader文件读取器(%input); 字符串^行; //char ws=''; 数组^temp; 查找(0,SeekOrigin::Begin); 而((line=fileReader.ReadLine())!=nullptr) { 控制台::写线(行); c=直线->长度; //temp=line->ToCharArray(); for(i=0;i ToString(); } //要写入标签的代码 lblWordCount->Text=count\u W.ToString(); },c++,string,file-io,C++,String,File Io,除一个问题外,所有这些都有效。当我尝试运行程序并打开文件时,我收到一个错误,告诉我索引超出了范围。现在,我知道这意味着什么,但我不知道问题是如何发生的。而且,如果我不知道问题的原因,我无法修复它。我已经了解到可以通过字符串进行搜索对于for循环,当然对于char数组也是如此,其中有代码来执行转换,但在这两种情况下,我都会得到相同的错误。我知道它正在正确地读取文件,因为最终的程序还必须执行字符计数(正在工作),它会从头到尾完美地读取目标文档中每一行的大小。无论如何,我没有想法,所以我想我应该咨询更

除一个问题外,所有这些都有效。当我尝试运行程序并打开文件时,我收到一个错误,告诉我索引超出了范围。现在,我知道这意味着什么,但我不知道问题是如何发生的。而且,如果我不知道问题的原因,我无法修复它。我已经了解到可以通过字符串进行搜索对于for循环,当然对于char数组也是如此,其中有代码来执行转换,但在这两种情况下,我都会得到相同的错误。我知道它正在正确地读取文件,因为最终的程序还必须执行字符计数(正在工作),它会从头到尾完美地读取目标文档中每一行的大小。无论如何,我没有想法,所以我想我应该咨询更高级别的人。有什么想法吗?

可能是你的循环。你从I=0到I=c,但I=c太远了。你应该转到I=c-1:

for ( i=0; i<c; i++)

for(i=0;i可能是你的循环。你从i=0到i=c,但是i=c太远了。你应该到i=c-1:

for ( i=0; i<c; i++)

for(i=0;i计算空白很简单:

int spaces = std::count_if(s.begin(), s.end(),
                           [](unsigned char c){ return std::isspace(c); });
但有两点需要注意:

  • std::isspace()
    不能立即与
    char
    一起使用,因为
    char
    可以被签名,并且
    std::isspace()
    需要一个
    int
    值,该值必须为正
  • 这计算空格的数量,而不是单词的数量(或单词-1):单词可以由多个连续空格组成的空格序列分隔

  • 计算空白很简单:

    int spaces = std::count_if(s.begin(), s.end(),
                               [](unsigned char c){ return std::isspace(c); });
    
    但有两点需要注意:

  • std::isspace()
    不能立即与
    char
    一起使用,因为
    char
    可以被签名,并且
    std::isspace()
    需要一个
    int
    值,该值必须为正
  • 这计算空格的数量,而不是单词的数量(或单词-1):单词可以由多个连续空格组成的空格序列分隔

  • 字串内部的反斜杠需要加倍。<代码>字符串^行;< /Cord>?这是一个MS特定的C++变体吗?如果是的话,请在标签中注明。@ J.RetryMyHACKE:看起来像是管理C++。但是,你是对的……Robert Berry:请标记它。如果你得到索引越界错误,最好的办法是确定哪一行和它是什么索引,然后问你自己下面的问题,“为什么这个索引超出了这个字符串的界限?”我怎么能修复我的代码,这样它就没有这个行的有效索引范围。我建议读字符串字符串中的字符串的文档需要加倍。<代码>字符串^行;< /Cord>?这是一个MS特定的C++变体吗?如果是的话,在标签中提到。@ JyRetryMaHACKE:看起来像管理C++。.但你是对的…@Robert Berry:请标记它。如果你得到一个索引越界错误,最好的办法是A。确定它是哪一行和什么索引,然后问你自己以下问题,“为什么这个字符串中的索引越界?”我怎样才能修复我的代码,使它不会这样做。这一行的有效索引范围是多少。我建议阅读Strings的文档,一次更改使字数正常工作。非常感谢一次更改使字数正常工作。非常感谢much@user13107:
    []
    引入了lambda函数(带有空闭包的函数)。此函数的全部目的是调用
    std::isspace()
    ,使用从
    char
    @user13107正确转换的
    int
    s调用
    std::isspace()。
    []
    引入lambda函数(带有空闭包的函数)。此函数的全部目的是调用
    std::isspace()
    int
    s正确地从
    char
    转换而来。