我有一个非常简单的函数,它应该读取一个txt文件并通过一个类型字符串向量返回所有行.我已经使用调试器对它进行了几次调试,我唯一注意到的是"fileName"的值在ifstream声明的行上发生了变化.我究竟做错了什么??谢谢.
vector<string> readFile(char* fileName)
{
vector<string> fileLines;
fileLines.clear();
string line;
ifstream myfile (fileName);
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
fileLines.push_back(line);
}
myfile.close();
}
return fileLines;
}
Run Code Online (Sandbox Code Playgroud)
//////////////////////////////////
我有这个函数应该返回当前目录中所有txt文件的文件名.
vector<char*> getFileList()
{
vector<char*> fileNames;
fileNames.clear();
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
char currentPath[_MAX_PATH];
getCurrentPath(currentPath);
strncat(currentPath, "\\*", 3);
if (hFind = FindFirstFile(currentPath, &FindFileData))
{
string fileExtension = getExt(FindFileData.cFileName);
if (fileExtension == "txt" || fileExtension == "TXT")
{
fileNames.push_back(FindFileData.cFileName);
}
while(FindNextFile(hFind, &FindFileData) != 0)
{
string fileExtension = getExt(FindFileData.cFileName); …Run Code Online (Sandbox Code Playgroud) 我已经发现很多关于UnsatisfiedLinkError与JNI结合的事情和问题但是没有一个可以帮助我.我正在尝试使用Java隐藏窗口,因此我需要3个WinAPI函数.
我有以下Java源代码:
package hide.window;
public class HideWindow {
public native static int hideWindow(char[] windowTitle);
static {
System.loadLibrary("hideWindow");
}
public static void main(String[] args) {
System.out.println("loadLibrary was successful");
System.out.println(hideWindow("Session Window - Windows Internet Explorer".toCharArray()));
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有我的hide_window_HideWindow.h由javah生成.有一件事我不得不改变,因为它没有在库路径中找到jni.h文件所以我只是把它放到我的项目中并按以下方式包含它:
#include "jni.h"
Run Code Online (Sandbox Code Playgroud)
可能这导致我的错误? 整个文件:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class hide_window_HideWindow */
#ifndef _Included_hide_window_HideWindow
#define _Included_hide_window_HideWindow
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: hide_window_HideWindow
* Method: hideWindow
* Signature: ([C)I …Run Code Online (Sandbox Code Playgroud) 您好,我正在尝试在WM_COMMAND案例中打印文本,因为我需要在按下按钮后打印文本.
这是我的代码:
switch(msg)
{
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
case WM_COMMAND:
switch (LOWORD(wParam))
{
case 1:
PAINTSTRUCT ps;
HDC hDC;
hDC = BeginPaint(hwnd, &ps);
{
TextOut(hDC, 10, 50, "hello", 5);
}
EndPaint(hwnd, &ps);
UpdateWindow(hwnd);
break;
}
break;
}
Run Code Online (Sandbox Code Playgroud)
可悲的是,它没有打印任何东西.谢谢,问候.
/////////////////////////编辑:
我可以在WM_COMMAND期间使用TextOut():
HDC hDC;
hDC = GetDC(hwnd);
TextOut(hDC, 10, ypos, "Warnings: ", 10);
UpdateWindow(hwnd);
Run Code Online (Sandbox Code Playgroud)
谢谢你,对不起这个问题......
我有以下代码,最终导致分段错误.
for (int a=0; a<inputFileList.size(); a++)
{
fileLines = readFile(inputFileList[a].c_str());
for (int i = 0; i < fileLines.size(); i++)
{
if (fileLines[i].find("text") != string::npos)
{
bool warnFound = false, errFound = false;
i++;
while (fileLines[i].find("message") == string::npos && i < fileLines.size())
{
if (fileLines[i].find("error") != string::npos)
errFound = true;
else if (fileLines[i].find("warning") != string::npos)
warnFound = true;
i++;
}
i--;
if (errFound)
errCtr++;
else if (warnFound)
warnCtr++;
else
okCtr++;
}
}
fileLines.clear();
}
Run Code Online (Sandbox Code Playgroud)
当我删除while循环时,我不再得到此错误.但我不知道这个循环有什么问题.
谢谢您的支持