954,152 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

VB's Left, Right, Mid Functions in C++?

I apologize up front; I'm a VB Programmer trying to pick up C++. I have a very simple program that takes a string input from the user. How can I look at a specific character in that string? VB has the Left(), Right(), and Mid() Functions. Is there something similar for C++? A sample of my code is below. In this example, how could I have the program return the "T" in "Test String" or the "g" at the end?

#include "stdafx.h"
#include
#include

#using

using namespace System;
using namespace std;

int _tmain()
{
string strTest;
strTest = "Test String";
cout << strTest;

return 0;
}

Joe Cody
Allied Tube & Conduit

Daywalker46410
Newbie Poster
6 posts since Sep 2003
Reputation Points: 10
Solved Threads: 0
 

Left could be done by going:

char left(char *string) {
return string[0];
}


Right could be done like this:

char right(char *string) {
return string[strlen(string)];
}


I'm no VB programmer, since it's my personal opinion that VB is for idiots, so I don't know what mid() does. If it gets the middle character:

char mid(char *string) {
return string[strlen(string)>>1);
}


Does this help?

Mike29936
Newbie Poster
22 posts since Sep 2003
Reputation Points: 12
Solved Threads: 0
 
I'm no VB programmer, since it's my personal opinion that VB is for idiots, so I don't know what mid() does.


Well this isn't very nice, is it? (although.. i prefer C/C++ myself)

Valmian
Junior Poster in Training
82 posts since Sep 2003
Reputation Points: 13
Solved Threads: 0
 

I'm assuming I create these as functions, but I get an error when calling them.

error C2665: 'std::right' : none of the 2 overloads can convert parameter 1 from type 'std::string'

Daywalker46410
Newbie Poster
6 posts since Sep 2003
Reputation Points: 10
Solved Threads: 0
 

Did you declear the functions? May be there are these functions in reality since std::right would seem as if it thinks it is one of the library functions.. rename them to something like rightc() or smthn..
IIya
I'm assuming I create these as functions, but I get an error when calling them.

error C2665: 'std::right' : none of the 2 overloads can convert parameter 1 from type 'std::string'

Valmian
Junior Poster in Training
82 posts since Sep 2003
Reputation Points: 13
Solved Threads: 0
 
none of the 2 overloads can convert parameter 1 from type 'std::string'

It does strings, as in the character arrays. It doesn't do objects.

To get it to work, you have to do something like this:

char *string = "Hello. I am a string";
cout << right(string);


If there actually is a 'right()' function in there somewhere, I believe this will work:

::right(string);

Mike29936
Newbie Poster
22 posts since Sep 2003
Reputation Points: 12
Solved Threads: 0
 

I think he was using strings all along..
It does strings, as in the character arrays. It doesn't do objects.

To get it to work, you have to do something like this:

char *string = "Hello. I am a string";
cout << right(string);


If there actually is a 'right()' function in there somewhere, I believe this will work:

::right(string);

Valmian
Junior Poster in Training
82 posts since Sep 2003
Reputation Points: 13
Solved Threads: 0
 

u lot talking about left and right ok BUT i can't get my head around this,

1    For x = 1 to Len(txtNI.Text)   
2    If Asc(Mid(txtNi,x,1) < 65 or _
3    Asc(Mid(txtNi,x,1) > 90 Then
.....


I know this, on the first line of the code, Len function is looping and looking at each character in a string that has been entered in txtNi. Then on the second line Asc checks for Ascii characters all fine till here, i don't understand this part..

...
(Mid(txtNi,x,1) < 65
...


can anyway explain this plz?

simprix
Newbie Poster
1 post since Dec 2003
Reputation Points: 10
Solved Threads: 0
 
#include <iostream>
#include <stdlib.h>
#include <string>

#define ONE " via c++ string at() (worx only on 1 char): "
#define MORE " via c++ string substr() (worx on more chars): "

using namespace std;

int main(void)
{
    string test;
    
    do 
    {
        cout << "Enter the teststring (6 chars minimum): ";
        cin >> test;
    }
    while (test.size() < 6);
    
    /* u could actually use more chars with substr() method than just one
     * for example u could replace the test.substr(0, 1) with test.substr(0, 2)
     * to get 2 chars
     */
    cout << "\n\tleft()" << MORE << test.substr(0, 1) << "\n";
    cout << "\tleft()" << ONE << test.at(0) << "\n\n";
    
    cout << "\tright()" << MORE << test.substr(test.size() - 1, 1) << "\n";
    cout << "\tright()" << ONE << test.at(test.size() - 1) << "\n\n";
    
    /* here i extracted the 5th char, remember counting in c / c++ begins at 0, not at 1 */
    cout << "\tmid()" << MORE << test.substr(4, 1) << "\n";
    cout << "\tmid()" << ONE  << test.at(4) << "\n\n";
    
    system("PAUSE");	
    return 0;
}


this is actually some source who should illustrate you the use of the c++ string class (which is very handy) in order to simulate the vb functions u asked for, so u dont need your own functions for it, since all is already in c++ :cheesy:

r0ckbaer
Junior Poster in Training
55 posts since Dec 2003
Reputation Points: 13
Solved Threads: 6
 

memcpy(out,in,len); is alot faster and more efficient seeing as you're using pointers anyway

dotslashsatan
Newbie Poster
2 posts since May 2005
Reputation Points: 10
Solved Threads: 0
 

[QUOTE=Mike29936]Left could be done by going:
I'm no VB programmer, since it's my personal opinion that VB is for idiots, so I don't know what mid() does. If it gets the middle character:
[QUOTE]

why is vb for idiots? only an idiot would say that seeing as you can use windows api same as C++ just as fast!

mid = strncpy(out str,in str+start,len)

you should look up for cplusplus.com -> reference for a mini reference may help you with some stuff

dotslashsatan
Newbie Poster
2 posts since May 2005
Reputation Points: 10
Solved Threads: 0
 

Please don't bump ancient threads. Locked.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You