搜索LPSTR字符串

时间:2010-03-31 19:48:52

标签: c++

我希望在将整个文件发送到char *后找到一些单词。我知道如何使用字符串类函数,但我不想再次将数据复制到字符串变量。是否有任何类似的函数可用于char *字符串或我仍然应该使用字符串类?

4 个答案:

答案 0 :(得分:2)

http://www.cplusplus.com/reference/clibrary/cstring/strstr/

基本字符串的字符串操作函数位于cstring / string.h标头中: http://www.cplusplus.com/reference/clibrary/cstring/

答案 1 :(得分:1)

您可以使用strstr进行搜索(例如)。如果数据足够大以至于复制时间很长,那么使用像Boyer-Moore-Horspool搜索这样的东西可能是值得的。

答案 2 :(得分:0)

为什么不首先将文件加载到字符串中,因为您知道如何使用它?

#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <algorithm>

int main( int argc, char* argv[] ){
std::ifstream ifsFile( <file_name> );
ifsFile.unsetf( std::ios_base::skipws ); // make sure we're not skipping whitespaces

std::istream_iterator< char > begin( ifsFile ), end;
std::string strFile( begin, end ); // load the file into the string

// now print the file/search for words/whatever
std::copy( strFile.begin(), strFile.end(), std::ostream_iterator< char >( std::cout, "" ) );

return 0;
}

答案 3 :(得分:0)

您可能需要使用超过strstr(),因为您可能对单词边界感兴趣(我猜测您需要找到以空格或开头/结尾为界的匹配项)这条线。)

可能感兴趣的各种标准库函数:

strstr()
strtok() (or it's non-standard but sill useful cousin strtok_r())
strspn()
strpbrk()
strcspn()
strchr()

但是,字符串解析是直接C中的一个真正的痛苦(根据我的经验),您可能希望寻找可能有助于减轻痛苦的现有解析库(或正则表达式库)。