我正在使用ncurses编写文本编辑器,我想让程序保存我写的内容 - 文本文件。我目前所拥有的东西可以保存我写的东西,但是我在单词之间得到了一堆空字符...有时保存的字符与我输入的字符不同。我假设它与向量存储字符串的方式有关?或者推回功能可能会留下空字符?
main.cpp中:
#include<iostream> //g++ *.cpp -lncurses -o run
#include<fstream>
#include<string>
#include<ncurses.h>
#include<vector>
#include"draw.h"
using namespace std;
vector <string> file;
int nWords = 1;
int save(){
ofstream save;
save.open("/home/adam/editorText", ofstream::out);
for(int i=0; i<nWords; i++)
{
save.write(file[i].c_str(), sizeof(file[i]));
}
}
int colourCheck(){
if(has_colors() == false){
endwin();
cout<< "ERROR: your terminal does not support colours\n";
cout<< "exiting \n";
return 1;
}
else{
return 0;
}
}
int init()
{
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
start_color();
}
bool on = true;
int main()
{
string word = "";
const char * color = "blue";
init();
colourCheck();
drawGraphics draw;
draw.setDrawBox(0, 3, 0, 20);
draw.fillDrawBox(1, COLOR_BLACK, COLOR_BLUE);
while(on){
int chr= getch();
switch(chr){
case(32): //ascii value of 'space'
file.push_back(word);
printw("%c", chr);//
word = "";
nWords++; //every time space bar is pressed: nwords++
break;
case(27): //ascii value of 'ESC'
file.push_back(word);
save();
on = false;
break;
case(15):
default:
printw("%c", chr);
word.push_back(chr);
break;
}
}
endwin();
return 0;
}
答案 0 :(得分:1)
你的问题是:
sizeof(file[i])
sizeof()是一个编译时值。鉴于此,sizeof()如何知道字符串在运行时的长度是多少?
你想获得字符串的长度,为此你使用:
file[i].size()