| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3982 人关注过本帖
标题:关于C++查找文本字符串的问题
只看楼主 加入收藏
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:7 
关于C++查找文本字符串的问题
我想从已有文本中查找关键字,并输出该关键字所在的整行文字,为什么会出现这个错误啊?请问下这个错误是怎么回事啊啊?代码如下:
程序代码:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{    
    ifstream ist("L:\\1.txt");
    if(!ist)
    {
        cout<<"打开失败..."<<endl;
        return 0;
    }
    string line;
    char *s;
    while(!ist.eof())
    {
        getline(ist,line);
        s=strstr(line,"22");
        if(s!=NULL)
        {
            cout<<line<<endl;
        }
    }
    ist.close();
    return 0;
}


这是错误信息:
L:\Microsoft Visual Studio\MyProjects\C++\yes\test.cpp(19) : error C2664: 'strstr' : cannot convert parameter 2 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
搜索更多相关主题的帖子: 关键字 字符串 
2016-05-13 15:27
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
各位大神帮帮忙。。
2016-05-13 15:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
s=strstr(line.c_str(),"22");
2016-05-13 15:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
参考一下
程序代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main( void )
{  

    ifstream ist( "d:\\1.txt" );
    if( !ist )
    {
        cerr << "打开失败...\n";
        return 1;
    }

    for( string line; getline(ist,line); )
    {
        if( line.find("22") != string::npos )
            cout << line << '\n';
    }

    return 0;
}

2016-05-13 16:00
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 3楼 rjsp
可以了,谢谢你啊。不过请问下这个c_str()有什么用?百度说转化成c风格的字符串,为什么要转化成这样呢,难道C++没有字符串的吗?...我是小白。。。
2016-05-13 16:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用ID不见了在2016-5-13 16:06:54的发言:

可以了,谢谢你啊。不过请问下这个c_str()有什么用?百度说转化成c风格的字符串,为什么要转化成这样呢,难道C++没有字符串的吗?...我是小白。。。
我不知道你说的什么“百度”,什么“c风格”是什么意思
我只知道 strstr 的函数原型是 char *strstr( const char* str, const char* strSearch );
而你的调用代码 strstr(line,"22") 中 line 是 std::string 类型,实参和形参的类型不一致。
2016-05-13 16:14
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 4楼 rjsp
好的,谢谢
2016-05-13 16:17
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 6楼 rjsp
好吧,那c_str()得到作用是将std::line转换成const *char str型吗?
2016-05-13 16:21
快速回复:关于C++查找文本字符串的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012671 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved