小编Tom*_*Tom的帖子

C++参数在运行时发生变化

我有一个非常简单的函数,它应该读取一个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)

c++ arguments readfile

3
推荐指数
1
解决办法
167
查看次数

JNI调用中的UnsatisfiedLinkError

我已经发现很多关于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)

c++ java dll java-native-interface unsatisfiedlinkerror

2
推荐指数
1
解决办法
687
查看次数

在WM_COMMAND中使用TextOut()

您好,我正在尝试在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)

谢谢你,对不起这个问题......

winapi textout

1
推荐指数
2
解决办法
2636
查看次数

C++ SIGSEGV循环中的分段错误

我有以下代码,最终导致分段错误.

    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循环时,我不再得到此错误.但我不知道这个循环有什么问题.

谢谢您的支持

c++ file-io while-loop segmentation-fault

1
推荐指数
1
解决办法
407
查看次数