我想在不使用外部库或模块的情况下读取JSON文件。当我试图以简单的方式(比如读/写.txt文件)这样做时,它不会从文件中读取任何内容。我想逐行读取它作为字符串,make一些变化并替换线。 (或者只是写入一个新的JSON文件并使用它。)
我想要做的是用一个简单的连字符替换所有char的实例("≠")(" - ")
我尝试过:
fs.open ("/Users/aditimalladi/CLionProjects/file/JSON_FILE");
string str;
while(getline(fs,str))
{
size_t index = 0;
while(true) {
index = str.find("≠", index);
if (index == std::string::npos) break;
str.replace(index, 3, "-");
index += 1;
}
我该怎么做呢?我知道jsoncpp和其他类似的模块更容易。但我想没有这样做。
在上面的代码中,正在读取整个文件,并且不会替换该字符。
答案 0 :(得分:2)
尝试将代码调整为(需要C ++ 11):
fs.open ("/Users/aditimalladi/CLionProjects/file/JSON_FILE");
string str;
while(getline(fs,str))
{
size_t index = 0;
while(true) {
index = str.find(u8"≠", index);
if (index == std::string::npos) break;
str.replace(index, 3, 1, '-');
index += 1;
}
要保持源代码以ascii编码,请尝试:
fs.open ("/Users/aditimalladi/CLionProjects/file/JSON_FILE");
string str;
while(getline(fs,str))
{
size_t index = 0;
while(true) {
index = str.find(u8"\u2260", index);
if (index == std::string::npos) break;
str.replace(index, 3, 1, '-');
index += 1;
}
或者对于没有u8
的前C ++ 11或stdlibs - 带前缀的文字:
fs.open ("/Users/aditimalladi/CLionProjects/file/JSON_FILE");
string str;
while(getline(fs,str))
{
size_t index = 0;
while(true) {
index = str.find("\xE2\x89\xA0", index);
if (index == std::string::npos) break;
str.replace(index, 3, 1, '-');
index += 1;
}