我正在使用Windows 10 (Visual 2015)。
好的,首先我想说的是,我正在使用一个编辑框来让用户编写一个目录,appname,comboboxname,然后让wofstream输出目录,appname,comboboxname到一个.txt文件中。
我的问题是,有些目录有空格,所以当wifstream读取这些空间时,就先切断目录,然后将被切断的版本存储到wchar_t变量中。
程序所需要做的(我不确定它是否可能)是逐行输出。
示例:
C:\程序文件(X86)\我的世界 MinecraftLauncher “我的世界”
然后使用getline读取整行,包括空格,将该行存储到变量中,然后得到下一行。(但它也不能获取目录中没有的任何额外的空白,否则就无法工作),你们可能知道目录是如何工作的,lol)
所以你们不必看得那么仔细,我希望这发生在IDB_CLICK_ME的案例中。
下面是我当前的代码,在我决定将它添加到我的主要应用程序之前,我正在修改它:
这就是我试图读取文件的地方(没有空格)
case WM_CREATE:
{
wchar_t testData[20] = L"Hai";
CreateWindow(L"button", L"CLICK ME", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 5, 5, 200, 25, hwnd, (HMENU)IDB_CLICK_ME, NULL, NULL);
comboBox = CreateWindow(L"combobox", L" ", WS_VISIBLE | WS_CHILD | CBS_DROPDOWNLIST, 5, 50, 100, 100, hwnd, (HMENU)4, NULL, NULL);
hProgramName = CreateWindow(L"edit", L"Program Name", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, 5, 100, 200, 25, hwnd, NULL, NULL, NULL);
hProgramDirectory = CreateWindow(L"edit", L"Program Directory", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, 5, 130, 200, 25, hwnd, NULL, NULL, NULL);
hProgramNameComboBox = CreateWindow(L"edit", L"Name listed in ComboBox", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, 5, 160, 200, 25, hwnd, NULL, NULL, NULL);
std::wifstream myfile;
myfile.open("LaunchLocations.txt");
myfile >> std::noskipws >> gameLaunchtest.directory;
myfile >> std::noskipws >> gameLaunchtest.AppName;
myfile >> std::noskipws >> gameLaunchtest.ComboBoxName;这就是我写它的地方,到目前为止,这是正确的。
ComboBox_AddString(comboBox, gameLaunchtest.directory);
break;
case WM_COMMAND:
switch (LOWORD(wparam))
{
case IDB_CLICK_ME:
GetWindowText(hProgramDirectory, gameLaunchtest.directory, MAX_PATH);
GetWindowText(hProgramName, gameLaunchtest.AppName, MAX_PATH);
GetWindowText(hProgramNameComboBox, gameLaunchtest.ComboBoxName, MAX_PATH);
wofstream launchLocations;
launchLocations.open("LaunchLocations.txt");
launchLocations << gameLaunchtest.directory << endl;
launchLocations << gameLaunchtest.AppName << endl;
launchLocations << gameLaunchtest.ComboBoxName << endl;
launchLocations.close();发布于 2015-10-15 17:15:32
因此,我解决了问题的方式(一些非常帮助的成员告诉我,我必须使用wifstream getline而不是字符串getline)
std::wifstream myfile;
while (myfile.getline(test[number].directory, 100))
{
myfile.getline(test[number].AppName, 100);
myfile.getline(test[number].ComboBoxName, 100);
test[number].ID;
ComboBox_AddString(comboBox, test[number].ComboBoxName);
number++;
test[number].ID = test[number].ID + 1;https://stackoverflow.com/questions/33138014
复制相似问题