我希望在将整个文件发送到char *后找到一些单词。我知道如何使用字符串类函数,但我不想再次将数据复制到字符串变量。是否有任何类似的函数可用于char *字符串或我仍然应该使用字符串类?
答案 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中的一个真正的痛苦(根据我的经验),您可能希望寻找可能有助于减轻痛苦的现有解析库(或正则表达式库)。