标签: cstring

用C++搜索CStrings

我想知道是否有一个本机C++(或STL/Boost)函数会在CString中搜索指定的字符串?

例如

CString strIn = "Test number 1";
CString strQuery = "num";

bool fRet = SomeFn(strIn, StrQuery);

if( fRet == true )
{
  // Ok strQuery was found in strIn
 ...
Run Code Online (Sandbox Code Playgroud)

我发现了一些像CompareNoCase IndexOf等函数......但是到目前为止他们并没有真正按照我的意愿去做(或者使用CLR/.Net)

谢谢!

c++ string search mfc cstring

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

字符串问题

我正在使用cstring函数,该函数应该比较两个字符串MyString和m2的值.我有#include所以它绝对不是那样的.这些是我的错误.

(74) : error C2275: 'MyString' : illegal use of this type as an expression
(74) : error C2660: 'MyString::length' : function does not take 1 arguments
(76) : error C2275: 'MyString' : illegal use of this type as an expression
Run Code Online (Sandbox Code Playgroud)

这是我从中获取它们的代码.

bool MyString::operator ==(const MyString &m2) const
{
    int temp = 0;

    if (length(MyString) = length(m2)) // 74
    {
        if (strcmp(MyString, m2))  // 76
        {
            temp = 1;
        }
        else
        {
            temp = 2;
        }
    }
    if(temp = 2) …
Run Code Online (Sandbox Code Playgroud)

c++ compare cstring

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

c ++中的C字符串比较问题

我在c ++程序中遇到了比较问题.这是简化版.

#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
    if(argc>2){cout<<"3+Args"<<endl;}else//???
    if(argc==2){
        cout<<"2args"<<endl;
        if(argv[1]=="/hide-icons"){}
        if(argv[1]=="/show-icons"){}
        if(argv[1]=="/reinstall"){setAsDefault();}
        if(argv[1]=="/?"){showPossibleCommands();}
        if(argv[1]=="/1"){cout<<"go"<<endl;FirstRun();}
    }else{showPossibleCommands();cout<<argv[0]<<endl;}
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行"programname.exe/1"时,我的程序写入"2args"而不是"go".我错过了一些明显的东西吗

c++ cstring

0
推荐指数
2
解决办法
2585
查看次数

在没有cstring的情况下比较C++中的字符数组和字符串文字

在我的编程课中,我们目前有一个项目要求我们在程序中加入参数.然后我需要能够检查其中一个参数,看看哪个值传递给程序,以便我可以选择适合该程序的行为.在之前的家庭作业中,我使用以下代码使用cstring库中包含的strcmp函数执行此操作:

int main(int argc, char *argv[]) {
   if (strcmp(argv[1], "yes") == 0) {
      // do this code
   } else if (strcmp(argv[1], "no") == 0) {
      // do this code
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,我们不允许在此项目中使用cstring库.我怎么能这样做?

c++ comparison arguments cstring

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

需要写一个字符串常量,我该如何解决这个问题呢?

我有以下代码:

int main() {
    char *sPPhrase[51];

    /* Input */
    printf("Enter string (max. 50 chars):\n");
    fflush(stdout);                         /* Works around an annoying Eclipse bug that fails to display the output from the printf command */
    scanf("%s", *sPPhrase);   /* Won't work */

    /* More code goes here */
}
Run Code Online (Sandbox Code Playgroud)

scanf()命令失败,我想,是因为*sPPhrase不可写的sPPhrase指向一个字符串常量.编译器没有任何错误的线索.稍后,我需要将此字符串传递给此函数:

char* reverse(char* sPPhrase[]);

字符串常量不可写,但我需要将此char*传递给此函数.如何重写我的代码以使其工作?

c pointers cstring

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

char*值在赋值期间被破坏

我有以下代码,它从函数中获取返回值 char*

cDestDrive = ReadFromRegistry(HKEY_CURRENT_USER,NDSPATH,szDestPathRoot);
Run Code Online (Sandbox Code Playgroud)

我可以读取内部的值,cDestDrive 直到我分配它为止.我分配它的那一刻:

 CString strServerAddress = cDestDrive;
Run Code Online (Sandbox Code Playgroud)

cDestDrive的值被更改(损坏),我无法获得CString strServerAddres任何想法的价值,为什么会发生这种情况.

编辑: 从注册表中读取的代码

char* CNDSShellExtender::ReadFromRegistry(HKEY hKey,LPCTSTR lpNDS,LPSTR lpRegKey)
{

        HKEY hRegKey=NULL;
        if(hKey==NULL || lpNDS==""||lpNDS==NULL||lpRegKey==""||lpRegKey==NULL)
            MessageBox(NULL,"Reading from Registry Failed!Invalid Path",
                                            _T("Network Drive Solution"),
                                                           MB_ICONERROR);

        LONG lOpenRes=RegOpenKey(hKey,lpNDS,&hRegKey);

        if (lOpenRes!=ERROR_SUCCESS ||lpNDS==NULL) 
            MessageBox ( NULL, "Can not Find Any Server to Connect",
                                            _T("NDSShellExtension"),
                                                     MB_ICONERROR );


        if(lOpenRes==ERROR_SUCCESS && lpNDS!=NULL)
        {
            TCHAR tSZValue[MAX_PATH] = {0};
            DWORD dwBufSize=MAX_PATH;
            LONG lCloseOut;
            LPBYTE lpStorage = reinterpret_cast<LPBYTE>(tSZValue);
            char* cpRegKeyVal=tSZValue;

            if (ERROR_SUCCESS == RegQueryValueEx(hRegKey,lpRegKey , 0, …
Run Code Online (Sandbox Code Playgroud)

c++ windows cstring

0
推荐指数
2
解决办法
371
查看次数

如何比较c中的字符

我有一个小项目,我需要比较一个流的第一个字节.问题是该字节可以是0xe5或任何其他不可打印的字符,因此表示该特定数据是坏的(一次读取32位).我可以允许的有效字符是AZ,az,0-9,'.' 和空间.

目前的代码是:

FILE* fileDescriptor; //assume this is already open and coming as an input to this function.
char entry[33];

if( fread(entry, sizeof(unsigned char), 32, fileDescriptor) != 32 )
{
    return -1; //error occured
}

entry[32] = '\0';  //set the array to be a "true" cstring.

int firstByte = (int)entry[0];

if( firstByte == 0 ){
    return -1;    //the entire 32 bit chunk is empty.
}

if( (firstByte & 0xe5) == 229 ){       //denotes deleted.
    return -1;    //denotes deleted.
}
Run Code Online (Sandbox Code Playgroud)

所以问题在于,当我尝试执行以下操作时: …

c linux c-strings cstring standard-library

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

在char*var中分配的内存; 宣言

在C中,声明像这样的char指针

char* p="Hello";
Run Code Online (Sandbox Code Playgroud)

为字符串文字分配一些内存Hello\0.当我这样做之后

p="FTW";
Run Code Online (Sandbox Code Playgroud)

分配给的内存会发生什么Hello\0?地址p是否指向更改?

c string cstring string-literals

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

为什么这个简单的c ++ c样式字符串反向方法会抛出访问冲突异常?

我一直在使用Stroustrup的C++编程语言,而且我在早期的exersize方面遇到了困难.任务是构建一个反转ac样式字符串的方法rev.我认为我的逻辑是正确的,但是当我尝试修改字符串时出现错误.我可以不这样做吗?

int strlen_(char* string)
{
    int count = 0;
    while (*string != '\0'){
        count ++;
        string ++;
    }

    return count;
}

void rev(char* string)
{
    //length of the string is going to be useful 
    int len = strlen_(string);

    //two counters, one going forward, one going back

    int forwardIndex = 0;
    int backwardIndex = len-1; 

    char temp;
    while (forwardIndex < backwardIndex){
        temp = string[forwardIndex];
        string[forwardIndex] = string[backwardIndex];   //Exception Here
        string[backwardIndex] = temp;
        forwardIndex--;
        backwardIndex--;
    }

}

void main()
{
    char* test …
Run Code Online (Sandbox Code Playgroud)

c++ cstring

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

我无法为我的char指针分配内存

我试图将内存分配给char指针(它应该在以后存储十六进制值)一旦我运行此代码程序崩溃.(我必须使用C-String)

int main() {
    char *c = (char*)malloc(sizeof(unsigned int)*2);
}
Run Code Online (Sandbox Code Playgroud)

我在互联网上看到这个例子,但它在我的机器上失败了.为什么?

c++ cstring

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