c++ - 如何从 char* 字符串中删除 � UFT8 字符?
问题描述
关于如何替换/忽略来自 C stdio.h getline() 的无效 Unicode/UTF8 字符的问题?我针对这个问题提出了一个可能的解决方案,但我没有设法让它正常工作。
这是完整的例子:
FILE* cfilestream = fopen( "/filepath.txt", "r" );
int linebuffersize = 131072;
char* readline = (char*) malloc( linebuffersize );
char* fixedreadline = (char*) malloc( linebuffersize );
int index;
int charsread;
int invalidcharsoffset;
while( true )
{
if( ( charsread = getline( &readline, &linebuffersize, cfilestream ) ) != -1 )
{
invalidcharsoffset = 0;
for( index = 0; index < charsread; ++index )
{
if( readline[index] != '�' ) {
fixedreadline[index-invalidcharsoffset] = readline[index];
}
else {
++invalidcharsoffset;
}
}
std::cerr << "fixedreadline=" << fixedreadline << std::endl;
}
else {
break;
}
}
当我编译它时,我收到以下警告:
$ x86_64-linux-gnu-gcc -g -O0 -Wall -ggdb -std=c++11
source/fastfile.cpp:512:44: warning: multi-character character constant [-Wmultichar]
if( readline[index] != '�' ) {
^~~~~
并且在运行程序时,它不会从输入字符串中删除 � 字符Føö�Bår
。
解决方案
推荐阅读
- html - Angular2 通用表的列宽
- android - 无法将数据添加到 Firestore (Android) 中的文档
- excel - 如果条件存在于两个不同的列中,则更改 SUMIF 数组
- excel - 尝试使用函数获取范围内的行数 - 在 VBA 中有效,但在单元格中调用时无效
- c - 在YUV中调整Y分量的效果?
- python - 从带有下拉列表的 url 抓取 csv 文件?
- ffmpeg - FFMPEG“分段错误”与网络流源
- c++ - 我的迭代器没有按应有的方式工作
- sql-server - 将 BulkCopy 与 Powerhsell SQL SMO 结合使用
- reactjs - 在 redux combineReducers 中调用所有 reducer 是否正确?