c++编程s.find('*') != -1 没找到*时会返回-1 而不是别的非1整数

#include<iostream>
#include<sstream>
#include<fstream>
using namespace std;
int main(int argc, char* argv[])
{
ifstream in( "abc.txt" );
int n , sum = 0 ;
string str ;
for( string s ; getline( in , s ) ; ) //文件流操作
{
n = 0 ;
for( istringstream sin( s ) ; sin>>str ; ) //字符串流操作
{
if( str == "25" )
n++;
}
if( n )
n = ( s.find('*') != -1 ? 2 * n : n ); /*为什么s.find('*') != -1,为什么是-1???????当我把-1换成别的非1数时 结果就变了*/
sum += n;
}
cout<<sum <<endl;

return 0;
}
//----------------------
abc.txt文件内容
Oct. 25 2003
Oct. 26 2003
Sep. 12 2003*
Juy. 25 2002*
App. 25 2004

讲明白了 有追分

string的find,如果找不到,返回的值应该是叫:npos, npos是个静态常量,定义如下:
static const size_type npos = -1
所以就拿find的结果与-1比较,看是否有查询到指定的内容
温馨提示:内容为网友见解,仅供参考
无其他回答

c++编程s.find('*') != -1 没找到*时会返回-1 而不是别的非1整数
string的find,如果找不到,返回的值应该是叫:npos, npos是个静态常量,定义如下:static const size_type npos = -1 所以就拿find的结果与-1比较,看是否有查询到指定的内容

c++遍历获取文件夹下的文件_findfirst为什么会返回-1
应该是s1的值有问题,所以没找到文件。在intptr_t fr = _findfirst(s1.c_str(), &fd);之前打个断点调试下看看s1.c_str()的值是什么,是不是一个正确的路径。另外,由于你的第一段代码不完整,无法判断有没有问题。只是提醒下,wr用完后记得close。

C++中find函数的返回值可以和-1或0比较吗???
均返回size_t,因此可以与0比较。与-1比较的话会导致-1转换为无符号整型而变成一个非常大的数。(2)(unordered_)(multi)set\/map类里的find函数,或algorithm头文件里的find函数。这些find函数返回相应的迭代器,因此不能与-1或0比较。

C++ 中的数据怎样以浮点小数(而不是定点小数)输出,而不用科学计数...
if(text.find('e')!=string::npos){ string s1=text.substr(0,text.find('e'));string s2=text.substr(text.find('e')+1);ss2<<s2;int bit;ss2>>bit;cout<<"0.";for(int i=0;i<-bit-1;i++)cout<<'0';if(s1.find('.')!=string::npos)cout<<s1.erase(s1.find('....

string find反回一个整数,怎么调用
1.声明一个C++字符串声明一个字符串变量很简单: string Str;这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:a) string s; \/\/生成...

用c++语言编写一个程序:如何在字符串里查找第一个不重...
cnt==1) { cout<<s<<": "<<s[i]<<endl; return; } } cout<<s<<": "<<"没找到"<<endl;}int main(){ f("addbccadfeg"); f("addbccabfeg"); f("aabbccdd"); return 0;}运行结果:addbccadfeg: baddbccabfeg: faabbccdd: 没找到请按任意键继续. . ....

C++:有15个数按又大到小顺序放在一个数组中,输入一个数,要求用折半法查...
比如上题,要在一个15个元素的递增数组S中查找数值A,查找范围是S[0]-S[14],那么首先是找出中间点S[7]作比较,如果S[7]等于A就是找到了,如果S[7]大于A,则说明A在S[0]-S[6]之间;反之,如果S[7]小于A,则说明A在S[8]-S[14]之间,然后再重复上述步骤,找出范围内的中间点进行...

C++编程,从一个文件中统计所有出现过的单词,并按次数从大到小输出_百度...
比printf快大概10倍,而printf又比cout要快),不过要记得puts只能输出c字符串,所以要输出string的时候记得用 .c_str() 函数。unordered_map 比 map要快上很多,因为它使用哈希表(调用的时间是O(1),map调用时间是O(nlogn)),但是代价就是它不是按顺序储存的。

如何用C++实现读取系统日期并且把系统日期保存到某一txt文件里面?请给...
nRetCode = 1;} else { \/\/ TODO: code your application's behavior here.ofstream out("output.txt");if (!out) { cerr << "打开文件output.txt写入错误" << endl; return 1; } for (int i = 0; i < 10; ++i)write(out, CTime::GetCurrentTime()); \/\/ CTime::GetCurrentTime...

N为正整数,计算从1到N的所有整数中包含数字1的个数.用(c++)_百度...
确定是C++? 把数字转化成字符串,然后搜索相应的字符即可。 下面是一个简单的实现:include <iostream>#include <sstream>#include <string>using namespace std;bool isDigitinNumber(const unsigned int digit, const unsigned int number);int main(int argc, char** argv) { const unsigned int...

相似回答