иногда, когда вы копируете код из документа, он получает номера строк и странные кавычки. Я написал сценарий для удаления этих начальных чисел, но очень сложно найти способ удалить эти странные кавычки «», поэтому я включил свой полный код. Он читает файл и выдает отформатированный файл. Но компилятор предупреждает, что эти кавычки являются несколькими символами, что, я думаю, означает нестандартные символы ascii. Это работает, но это не очень хорошее решение. Любая помощь оценили:C++ Как заменить необычные кавычки в коде
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string replaceChar(string str, char ch1, char ch2);
// Main
int main(int argc, char *argv[]) {
string line;
fstream stri, stro;
// ifstream in
stri.open(argv[1], ios::in);
if(stri.fail()){
cerr << "File failed to open for input" << endl;
return 1;
}
// ofstream out
stro.open("file_out.txt", ios::out);
if(stro.fail()){
cerr << "File failed to open for output" << endl;
return 1;
}
// Read - Write
//stri.get(c);
getline(stri, line, '\n');
while(!stri.eof()){
// Remove numbers
line.erase(0,3);
//line.replace(line.begin(), line.end(), "‘", "\'");
//line.replace(line.begin(), line.end(), "’", "\'");
//line.replace(line.begin(), line.end(), "“", "\'");
//line.replace(line.begin(), line.end(), "”", "\'");
line = replaceChar(line, '‘','\'');
line = replaceChar(line, '’','\'');
line = replaceChar(line, '“','\"');
line = replaceChar(line, '”','\"');
stro << line << endl;
getline(stri, line, '\n');
}
// Close files
stri.close();
stro.close();
// Output
cout << "File Edited Ok!";
//cout << count -1 << " characters copied."<< endl;
}
string replaceChar(string str, char ch1, char ch2) {
for (int i = 0; i < str.length(); ++i) {
if (str[i] == ch1)
str[i] = ch2;
}
return str;
}
C++ 11 имеет поддержку юникода. Посмотрите на это. Начальная точка: http://stackoverflow.com/questions/6796157/unicode-encoding-for-string-literals-in-c11 –
Я видел 'while (! Eof)' остановленное чтение ... –
Почему это было Kerrek? –